﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ListaTelefonicaMEM
{
    [Serializable]
    public static class lt
    {
        public static List<Empresa> FListaEmpresas = new List<Empresa>();
        public static List<Telefone> FListaTelefones = new List<Telefone>();

        public static void AddEmpresa(string prNome)
        {
            int indice = 1;
            if (FListaEmpresas.Count != 0)
            {
                indice = FListaEmpresas.Max(p => p.Indice) + 1;
            }

            Empresa emp = new Empresa();
            emp.Indice = indice;
            emp.Nome = prNome;

            FListaEmpresas.Add(emp);
        }

        public static void DeletarEmpresa(int prIndice)
        {
            int i = FListaEmpresas.FindIndex(p => p.Indice == prIndice);

            ExecuteDeleteEmpresa(i);
        }

        public static void DeletarEmpresa(string prNome)
        {
            int i = FListaEmpresas.FindIndex(p => p.Nome == prNome);

            ExecuteDeleteEmpresa(i);
        }

        private static void ExecuteDeleteEmpresa(int prIndex)
        {
            FListaTelefones.RemoveAll(t => t.IndiceEmpresa == FListaEmpresas[prIndex].Indice);

            FListaEmpresas.RemoveAt(prIndex);
        }

        public static void AddTelefone(string prNumero, int prIndiceEmpresa)
        {
            int indice = 1;
            if (FListaTelefones.Count != 0)
            {
                indice = FListaTelefones.Max(t => t.Indice) + 1;
            }

            Telefone tel = new Telefone();
            tel.Indice = indice;
            tel.Numero = prNumero;
            tel.IndiceEmpresa = prIndiceEmpresa;

            FListaTelefones.Add(tel);
        }

        public static void DeletarTelefone(string prEmp, string prTelefone)
        {
            int iEmp = FListaEmpresas.FindIndex(p => p.Nome == prEmp);
            int indiceEmp = FListaEmpresas[iEmp].Indice;

            int i = FListaTelefones.FindIndex(t => t.Numero == prTelefone && t.IndiceEmpresa == indiceEmp);

            FListaTelefones.RemoveAt(i);
        }

        //public void EditarTelefone(Telefone prTelefone)
        //{
        //    int i = FListaTelefones.FindIndex(t => t.Indice == prTelefone.Indice);

        //    FListaTelefones[i] = prTelefone;
        //}
    }

    [Serializable]
    public class Empresa
    {
        public int Indice { get; set; }
        public string Nome { get; set; }
    }
    [Serializable]
    public class Telefone
    {
        public int Indice { get; set; }
        public string Numero { get; set; }
        public int IndiceEmpresa { get; set; }
    }
}
